Traditional data centers tend to run a single operating system instance and a single business application on one physical server. This “one server, one appliance” model leads to extremely poor resource utilization. For example, it is not uncommon for a significant portion of data center resources to be unused for a majority of the data center's “up” time. Wasted resources include CPU, RAM, Storage, and Network Bandwidth. Additionally, many traditional data centers are typically implemented by combining a heterogeneous mix of different servers, operating systems, applications and data. Consequently, deploying, managing, and reconfiguring software or hardware on physical servers and the data center's network infrastructure is mostly achieved via manual (e.g., human) labor, and it typically very time consuming. Additionally, in such data centers, the upgrading of servers typically involves a relatively slow and costly process. Further, in situations where workloads grow more rapidly than expected and place heavy demands on server resources, such traditional data centers face the problem of over-utilizing their servers, which may result in business continuity being placed at risk.
A number of factors have given rise to an increase in the utilization of cloud computing resources. For example, advances in networking technologies have significantly improved resource connectivity while decreasing connectivity costs. Advances in virtualization technologies have increased the efficiency of computing hardware by improving scalability and making it possible to more closely match computing hardware resources to the requirements of a particular computing task. Additionally, virtualization technologies commonly deployed in cloud computing environments have improved application reliability by enabling failover policies and procedures that reduce or all together eliminate disruption due to an application or hardware failure.
In general, the concept of “cloud computing” refers to the utilization of a set of shared computing resources (e.g., servers) which are typically consolidated in one or more data center locations. A cloud-based computing resource is thought to execute or reside somewhere on the “cloud”, which may be an internal corporate network or the public Internet. From the perspective of an application developer or information technology administrator, cloud computing enables the development and deployment of applications that exhibit scalability (e.g., easily and dynamically increase or decrease resource utilization as needed), performance (e.g., execute efficiently and fast), and reliability (e.g., never, or at least rarely, fail), all without any regard for the nature or location of the underlying infrastructure.
A cloud computing implementation of a software application allows an organization to access the application through the Internet without knowledge of, expertise with, or control over the technology infrastructure supporting the application. Cloud computing provides many benefits over traditional infrastructure models where compute equipment is owned or leased and housed in a server room, data center, or collocation site, such as on-demand procurement, reduced cost, increased capability in terms of compute and storage, flexibility and application mobility. For example, applications may be provided that are accessible from a web browser, while the application software and data are centrally stored. Cloud computing may add complexity over traditional infrastructure models in terms of regulation compliance and controllability; organizations may have difficulty determining the trade-off between the benefits and the complexity.
There are various systems and methods devised for assessing the transitioning of computing components/service categories to a cloud computing environment as mentioned below.
US 2010/0042720 includes a multi-cloud management module having a plurality of cloud adapters. The multi-cloud management module provides a unified administrative interface for provisioning cloud-based resources on any one of several clouds for which a cloud adapter is configured for use with the multi-cloud management module. Each cloud adapter converts non-cloud-specific commands to cloud-specific provisioning commands for the cloud to which the cloud adapter is associated.
US 2010/0125473 discloses a system for providing a cloud computing assessment tool. The system may include a memory, an interface, and a processor. The processor may receive a data center configuration from the user. The data center configuration may include a compute and storage capacity. The processor may determine a cloud computing configuration equivalent to the data center configuration. The processor may identify a time period for transitioning from the data center to cloud computing. The processor may identify a plurality of trend values representing changes in the compute capacity and storage capacity over the period of time. The processor may generate a strategy to transition from the data center to cloud computing over the period of time. The strategy may account for the changes in the compute capacity and the storage capacity. The processor may provide a graphical output and a numerical output of the strategy to the user.
US 2009/0276771 discloses on-demand, grid and/or utility computing networks. Examples of at least a portion of the techniques (and/or related features, aspects, and/or benefits) disclosed herein include: techniques for migrating virtual appliances from a first server grid to a second server grid via a communication network; techniques for migrating distributed applications from a first server grid to a second server grid via a communication network; techniques for delivering pre-packaged software in virtual appliances to computing systems for use in operating software applications; techniques for managing use of virtualized computing resources implemented in a computing network; exchange systems for renting or leasing computing resources provided over a computing network; techniques for offering, via a computing network, virtualized computing resources for use in deployment of one or more distributed applications at one or more server grids of a computing network; techniques for offering, via a computing network, distributed application components for use in deployment of one or more distributed applications at one or more server grids of a computing network; techniques for implementing exchange of computing resources between computing resource providers and computing resource subscribers of a computing network; and the like. In at least one embodiment, the computing network may include multiple different data centers and/or server grids which are deployed different geographic locations. In at least one embodiment, at least some of the server grids may be operable to provide on-demand, grid and/or utility computing resources for hosting various types of distributed applications. In at least one embodiment, a distributed application may be characterized as an application made up of distinct components (e.g., virtual appliances, virtual machines, virtual interfaces, virtual volumes, virtual network connections, etc.) in separate runtime environments. In at least one embodiment, different ones of the distinct components of the distributed application may be hosted or deployed on different platforms (e.g., different servers) connected via a network. In some embodiments, a distributed application may be characterized as an application that runs on two or more networked computers.
However, above-mentioned systems and methods do not provide a unique, fast, efficient, highly automated and comprehensive framework which provides for very high level of parameterization at each level that are useful in aligning with the organization's imperatives, business needs and business demands. The afore-mentioned problems are solved by embodiments disclosed herein.